package gui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import mathOperations.IDOp;
import polynom.Polynom;
public class GUI implements ActionListener {
private JFrame myFrame = new JFrame("Polynom Calculator");
private JButton plus = new JButton("+");
private JButton subtract = new JButton("-");
private JButton multiply = new JButton("*");
private JButton division = new JButton("/");
private JButton integralFirst = new JButton("Integral 1st");
private JButton integralSecond = new JButton("Integral 2nd");
private JButton deriveFirst = new JButton("Derive 1st");
private JButton deriveSecond = new JButton("Derive 2nd");
private JTextField firstEnter = new JTextField();
private JTextField secondEnter = new JTextField();
private JTextField resultBox = new JTextField();
private Polynom polynom;
public String firstString;
public String secondString;
public GUI(int HEIGHT, int WIDTH) {
buildFrame(HEIGHT, WIDTH);
// main Panel
JPanel mainPanel = new JPanel();
mainPanel.setBackground(Color.DARK_GRAY);
// content panel with two sections, UP and DOWN
JPanel contentPanel = new JPanel();
contentPanel.setLayout(new GridLayout(2, 1));
contentPanel.setOpaque(false);
// content Panel up
JPanel upPanel = new JPanel();
buildUpPanel(upPanel);
contentPanel.add(upPanel);
setHelp();
// content panel down
JPanel downPanel = new JPanel();
buildDownPanel(downPanel);
contentPanel.add(downPanel);
mainPanel.add(contentPanel);
myFrame.add(mainPanel);
myFrame.setVisible(true);
}
public GUI() {
// TODO Auto-generated constructor stub
}
private void buildDownPanel(JPanel downPanel) {
// TODO Auto-generated method stub
downPanel.setLayout(new GridBagLayout());
GridBagConstraints gpcDown = new GridBagConstraints();
gpcDown.insets = new Insets(10, 10, 10, 10);
Font font = new Font("Arial", Font.BOLD, 25);
Font font2 = new Font("Arial", Font.BOLD, 15);
createButton(plus, font, gpcDown, 0, 0);
downPanel.add(plus, gpcDown);
createButton(subtract, font, gpcDown, 1, 0);
downPanel.add(subtract, gpcDown);
createButton(multiply, font, gpcDown, 2, 0);
downPanel.add(multiply, gpcDown);
createButton(division, font, gpcDown, 3, 0);
downPanel.add(division, gpcDown);
createButton(integralFirst, font2, gpcDown, 0, 1);
downPanel.add(integralFirst, gpcDown);
createButton(integralSecond, font2, gpcDown, 1, 1);
downPanel.add(integralSecond, gpcDown);
createButton(deriveFirst, font2, gpcDown, 2, 1);
downPanel.add(deriveFirst, gpcDown);
createButton(deriveSecond, font2, gpcDown, 3, 1);
downPanel.add(deriveSecond, gpcDown);
downPanel.setBackground(Color.DARK_GRAY);
}
private void createButton(JButton button, Font font, GridBagConstraints gpcDown, int i, int j) {
// TODO Auto-generated method stub
button.addActionListener(this);
button.setPreferredSize(new Dimension(150, 50));
button.setBackground(Color.WHITE);
button.setFont(font);
gpcDown.gridx = i;
gpcDown.gridy = j;
}
private void buildUpPanel(JPanel upPanel) {
// TODO Auto-generated method stub
upPanel.setLayout(new GridBagLayout());
upPanel.setPreferredSize(new Dimension(750, 300));
GridBagConstraints gpcUp = new GridBagConstraints();
gpcUp.insets = new Insets(10, 10, 10, 10);
createInput(upPanel, "FIRST POLYNOM", gpcUp, 0, 0, 1, 0);
firstEnter.setPreferredSize(new Dimension(600, 30));
upPanel.add(firstEnter, gpcUp);
createInput(upPanel, "SECOND POLYNOM", gpcUp, 0, 1, 1, 1);
secondEnter.setPreferredSize(new Dimension(600, 30));
upPanel.add(secondEnter, gpcUp);
createInput(upPanel, "RESULT", gpcUp, 0, 2, 1, 2);
resultBox.setPreferredSize(new Dimension(600, 30));
resultBox.setEditable(false);
upPanel.add(resultBox, gpcUp);
upPanel.setBackground(Color.DARK_GRAY);
}
private void createInput(JPanel panel, String string, GridBagConstraints gpcUp, int i, int j, int k, int l) {
// TODO Auto-generated method stub
gpcUp.gridx = i;
gpcUp.gridy = j;
JLabel label = new JLabel(string);
label.setForeground(Color.WHITE);
panel.add(label, gpcUp);
gpcUp.gridx = k;
gpcUp.gridy = l;
}
private void buildFrame(int HEIGHT, int WIDTH) {
// TODO Auto-generated method stub
myFrame.setPreferredSize(new Dimension(WIDTH, HEIGHT));
myFrame.setMaximumSize(new Dimension(WIDTH, HEIGHT));
myFrame.setMinimumSize(new Dimension(WIDTH, HEIGHT));
myFrame.setResizable(false);
myFrame.setLocationRelativeTo(null);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
setFirstString(firstEnter.getText());
setSecondString(secondEnter.getText());
if (e.getSource() == plus) {
polynom = new Polynom(firstString, secondString, IDOp.Sum);
}
if (e.getSource() == subtract) {
polynom = new Polynom(firstString, secondString, IDOp.Difference);
}
if (e.getSource() == multiply) {
polynom = new Polynom(firstString, secondString, IDOp.Multiply);
}
if (e.getSource() == division) {
polynom = new Polynom(firstString, secondString, IDOp.Division);
}
if (e.getSource() == integralFirst) {
polynom = new Polynom(firstString, IDOp.Integral1);
}
if (e.getSource() == integralSecond) {
polynom = new Polynom(secondString, IDOp.Integral2);
}
if (e.getSource() == deriveFirst) {
polynom = new Polynom(firstString, IDOp.Derive1);
}
if (e.getSource() == deriveSecond) {
polynom = new Polynom(secondString, IDOp.Derive2);
}
resultBox.setText(polynom.res);
}
private void setHelp() {
setResult("INPUT SHOULD MATCH THE NEXT FORM: [COEFFICIENT]x^[POWER]");
}
private void setSecondString(String secondString) {
this.secondString = secondString;
}
private void setFirstString(String firstString) {
this.firstString = firstString;
}
public void setResult(String result) {
resultBox.setText(result);
}
}